TestWidgetsFlutterBinding.クロックの変更
まとめ
のTestWidgetsFlutterBinding.clock
今はから来ていますpackage:clock
そしてそうではありませんpackage:quiver
。
コンテクスト
のflutter_test
パッケージは依存関係を削除しています
より重い体重quiver
依存関係を優先するパッケージ
さらに 2 つのターゲットを絞った軽量パッケージ、clock
とfake_async
。
これは、クロックを取得するユーザー コードに影響を与える可能性があります。TestWidgetsFlutterBinding
そしてそれをAPIに渡します
それはClock
からpackage:quiver
、
たとえば、次のようなコード:
testWidgets('some test', (WidgetTester tester) {
someApiThatWantsAQuiverClock(tester.binding.clock);
});
移行ガイド
この変更後に表示される可能性のあるエラーは次のようになります。
Error: The argument type 'Clock/*1*/' can't be assigned to the parameter type 'Clock/*2*/'.
- 'Clock/*1*/' is from 'package:clock/src/clock.dart' ('<pub-cache>/clock/lib/src/clock.dart').
- 'Clock/*2*/' is from 'package:quiver/time.dart' ('<pub-cache>/quiver/lib/time.dart').
オプション #1: パッケージからのパッケージ:quiver クロックの作成:クロック クロック
最も簡単な移行は、package:quiver
からの時計package:clock
クロックを渡すことで実行できます。.now
関数
への引き裂きClock
コンストラクタ:
移行前のコード:
testWidgets('some test', (WidgetTester tester) {
someApiThatWantsAQuiverClock(tester.binding.clock);
});
移行後のコード:
testWidgets('some test', (WidgetTester tester) {
someApiThatWantsAQuiverClock(Clock(tester.binding.clock.now));
});
オプション #2: package: Clock クロックを受け入れるように API を変更する
呼び出している API を所有している場合は、
を受け入れるように変更することもできます。Clock
からpackage:clock
。
これは何位かに基づいた判断です。
クロック以外のものを使用してこの API を呼び出す
から取得したTestWidgetsFlutterBinding
。
このルートを進むと、通過する通話サイトがtester.binding.clock
変更する必要はありませんが、
ただし、他の通話サイトでも同様です。
DateTime function()
オプション #3: API を変更して、のみを使用する場合は、Clock
そのためにnow
関数、
API を制御すると、それを変更することもできます
の代わりにその関数を直接受け入れるClock
。
これにより、どちらのタイプでも簡単に呼び出すことができます。Clock
、
のティアオフを通過することにより、now
いずれかのタイプのクロックからのメソッド:
移行前のコードの呼び出し:
testWidgets('some test', (WidgetTester tester) {
someApiThatWantsAQuiverClock(tester.binding.clock);
});
移行後のコードの呼び出し:
testWidgets('some test', (WidgetTester tester) {
modifiedApiThatTakesANowFunction(tester.binding.clock.now);
});
タイムライン
リリースされたバージョン: 1.18.0
安定版リリース: 1.20
参考文献
API ドキュメント:
TestWidgetsFlutterBinding
関連する PR:
- PR 54125: flutter_test quiver dep を削除します。 代わりにfake_asyncとクロックを使用してください